import request from "@/utils/request";

//1. 平台属性值的每一项的类型
export interface attrValueItemType {
    id?: number; //当前属性值的id
    valueName: string; //当前的属性值某个值
    attrId: number | undefined; //当前属性值所在的属性的id
    isEdit?: boolean;    //新增一个属性,代表当前是编辑模式(添加属性值的时候 input标签) 还是查看模式(修改属性值的时候 span标签) 并且两种模式可以相互切换  最后发送请求的时候会去除这个属性
    selectData?: string  // 用于收集添加sku需要的 当前平台属性名和 当前的平台属性值
}

//2.平台属性值列表类型
export type attrValueListType = attrValueItemType[];

//3.平台属性某一项的类型
export interface attrItemType {
    id?: number; //当前平台属性的id
    attrName: string; //当前平台属性的名字
    categoryId: number;  // 固定的 category3Id的值
    categoryLevel: number;  // 固定的3  id等级
    attrValueList: attrValueListType; //当前属性的属性值列表
    selectData?: string  // 用于收集添加sku需要的 当前平台属性名attrId和 当前的平台属性值valueId
}

//4.平台属性列表整体类型
export type attrListType = attrItemType[];

// 1- 根据3级分类请求当前分类的属性信息列表
export const reqAttrInfoListAsync = (
    category1Id: number,
    category2Id: number,
    category3Id: number
) => {
    return request.get<null, attrListType>(
        `/admin/product/attrInfoList/${category1Id}/${category2Id}/${category3Id}`
    );
};

// 2- 添加/修改的请求
export const reqAddOrUpdateAttrInfoListAsync = (AttrInfo: attrItemType) => {
    return request.post<null, null>(`/admin/product/saveAttrInfo`, AttrInfo);
};

// 3- 删除属性的请求
export const reqDeleteAttrAsync = (attrId: number) => {
    return request.delete<null, null>(`/admin/product/deleteAttr/${attrId}`);
};
